2025-10-02 11:30:04 -04:00
|
|
|
#ifndef _COMBINATORIAL_LOGIC_EXPRESSION_H
|
|
|
|
|
#define _COMBINATORIAL_LOGIC_EXPRESSION_H
|
2024-09-08 01:04:41 +10:00
|
|
|
|
2025-09-02 13:04:54 -04:00
|
|
|
#include <vector>
|
|
|
|
|
#include <memory>
|
2025-10-21 20:02:36 -04:00
|
|
|
#include <user/logic.h>
|
2024-09-08 01:04:41 +10:00
|
|
|
#include <mentalEntity.h>
|
2025-10-05 21:15:55 -04:00
|
|
|
#include <concept.h>
|
|
|
|
|
#include <user/stimFrame.h>
|
2024-09-08 01:04:41 +10:00
|
|
|
|
2025-09-02 13:04:54 -04:00
|
|
|
namespace smo {
|
2025-10-02 11:30:04 -04:00
|
|
|
namespace cologex {
|
2025-09-02 13:04:54 -04:00
|
|
|
|
|
|
|
|
class Comparator
|
|
|
|
|
: public MentalEntity, public logic::Operand
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
/** EXPLANATION:
|
|
|
|
|
* The reference for a Comparator is the fixed mentity or range of mentities
|
|
|
|
|
* that this comparator is intended to validate a match against.
|
|
|
|
|
*
|
|
|
|
|
* There are several mentities against which a comparator can match. At the
|
|
|
|
|
* time of writing, we're fairly sure that these will be at minimum,
|
|
|
|
|
* qualia, chronomena and mentena.
|
|
|
|
|
*/
|
|
|
|
|
std::shared_ptr<MentalEntity> reference;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class ComparatorExpression
|
|
|
|
|
: public logic::UnaryExpression
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
ComparatorExpression(
|
|
|
|
|
logic::Operator &op, std::shared_ptr<Comparator> &comparator
|
|
|
|
|
)
|
2025-09-02 17:01:01 -04:00
|
|
|
: logic::UnaryExpression(
|
|
|
|
|
op, std::static_pointer_cast<logic::Operand>(comparator))
|
2025-09-02 13:04:54 -04:00
|
|
|
{}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CombinatorialLogicExpression
|
2025-10-05 21:15:55 -04:00
|
|
|
: public MentalEntity, public logic::Expression, public Concept
|
2024-09-08 01:04:41 +10:00
|
|
|
{
|
2025-09-02 13:04:54 -04:00
|
|
|
public:
|
|
|
|
|
|
2024-09-08 01:04:41 +10:00
|
|
|
};
|
|
|
|
|
|
2025-10-05 21:42:24 -04:00
|
|
|
class CombinatorialLogicExpressionSeq
|
2025-10-05 21:15:55 -04:00
|
|
|
: public MentalEntity, public Concept
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
std::vector<
|
|
|
|
|
std::pair<stim_buff::SimultaneityStamp, CombinatorialLogicExpression>
|
|
|
|
|
> expressions;
|
|
|
|
|
};
|
|
|
|
|
|
2025-10-02 11:30:04 -04:00
|
|
|
typedef CombinatorialLogicExpression Cologex;
|
2025-10-05 21:42:24 -04:00
|
|
|
typedef CombinatorialLogicExpressionSeq CologexSeq;
|
2025-09-02 13:04:54 -04:00
|
|
|
|
2025-10-02 11:30:04 -04:00
|
|
|
} // namespace cologex
|
2025-09-02 13:04:54 -04:00
|
|
|
} // namespace smo
|
|
|
|
|
|
2024-09-08 01:04:41 +10:00
|
|
|
#endif
|