1 2 #pragma once 3 4 #include "properties/CommutingAsProduct.hh" 5 #include "properties/NumericalFlat.hh" 6 #include "properties/WeightBase.hh" 7 #include "properties/TableauInherit.hh" 8 #include "properties/Distributable.hh" 9 #include "properties/DependsInherit.hh" 10 #include "properties/IndexInherit.hh" 11 #include "properties/SortOrder.hh" 12 13 namespace cadabra { 14 15 class Derivative : 16 public IndexInherit, 17 public TableauInherit, 18 public DependsInherit, 19 public Inherit<SortOrder>, 20 public CommutingAsProduct, 21 public NumericalFlat, 22 public WeightBase, 23 // virtual public TableauBase, 24 public Distributable, virtual public property { 25 public : ~Derivative()26 virtual ~Derivative() {}; 27 virtual std::string name() const override; 28 29 virtual unsigned int size(const Properties&, Ex&, Ex::iterator) const override; 30 virtual tab_t get_tab(const Properties&, Ex&, Ex::iterator, unsigned int) const override; 31 virtual multiplier_t value(const Kernel&, Ex::iterator, const std::string& forcedlabel) const override; 32 virtual bool parse(Kernel&, std::shared_ptr<Ex>, keyval_t& keyvals) override; unnamed_argument() const33 virtual std::string unnamed_argument() const override 34 { 35 return "to"; 36 }; 37 38 Ex with_respect_to; 39 }; 40 41 } 42