Fleet  0.0.9
Inference in the LOT
MyGrammar.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Grammar.h"
4 #include "Singleton.h"
5 
6 #include "DSL.h"
7 
8 double TERMINAL_WEIGHT = 3.0;
9 
10 // declare a grammar with our primitives
11 // Note that this ordering of primitives defines the order in Grammar
12 class MyGrammar : public Grammar<Utterance,TruthValue, TruthValue,bool,Utterance,Set,MyObject,MyColor,MyShape>,
13  public Singleton<MyGrammar> {
14 
16  using Super::Super;
17 public:
18 
20  using namespace DSL;
21 
22  // Set -> bool
23  add("empty(%s)", empty);
24  add("singleton(%s)", singleton);
25  add("doubleton(%s)", doubleton);
26  add("tripleton(%s)", tripleton);
27 
28  // Set x Set -> bool
29  add("subset(%s,%s)", subset);
30  add("card_gt(%s,%s)", card_gt);
31  add("card_eq(%s,%s)", card_eq);
32  add("equal(%s,%s)", eq);
33 
34  // bool x bool -> TruthValue
35  add("presup(%s,%s)", presup);
36 
37  // Set
38  add("\u00D8", emptyset);
39  add("context(%s)", context,TERMINAL_WEIGHT);
40  add("shape(%s)", shape,TERMINAL_WEIGHT);
41  add("color(%s)", color,TERMINAL_WEIGHT);
42 
43  // Set -> Set
44  add("intersection(%s,%s)", intersection);
45  add("union(%s,%s)", myunion);
46  add("complement(%s,%s)", complement);
47  add("difference(%s,%s)", difference);
48 
49  add("true", +[]() -> bool { return true; });
50  add("false", +[]() -> bool { return false; });
51  add("and(%s,%s)", Builtins::And<MyGrammar>);
52  add("or(%s,%s)", Builtins::Or<MyGrammar>);
53  add("not(%s)", Builtins::Not<MyGrammar>);
54 
55  add("x", Builtins::X<MyGrammar>);
56 
57 // // add recursive calls
58 // for(size_t a=0;a<words.size();a++) {
59 // add("F"+str(a)+"(%s)" , Builtins::Recurse<MyGrammar>, 1.0, a);
60 // }
61  }
62 
63 } grammar;
const auto tripleton
Definition: DSL.h:13
Definition: Grammar.h:44
MyGrammar grammar
const auto context
Definition: DSL.h:22
Definition: Singleton.h:6
const auto card_gt
Definition: DSL.h:6
const auto subset
Definition: DSL.h:28
double TERMINAL_WEIGHT
Definition: MyGrammar.h:8
const auto myunion
Definition: DSL.h:38
const auto presup
Definition: DSL.h:17
const auto color
Definition: DSL.h:24
const auto card_eq
Definition: DSL.h:7
const auto complement
Definition: DSL.h:44
const auto shape
Definition: DSL.h:23
const auto difference
Definition: DSL.h:50
const auto intersection
Definition: DSL.h:32
Definition: DSL.h:3
const auto empty
Definition: DSL.h:8
const auto emptyset
Definition: DSL.h:26
Definition: MyGrammar.h:72
MyGrammar()
Definition: MyGrammar.h:19
const auto doubleton
Definition: DSL.h:12
void add(std::string fmt, Primitive< T, args... > &b, double p=1.0, int a=0)
Definition: Grammar.h:312
const auto eq
Definition: DSL.h:15
const auto singleton
Definition: DSL.h:11
A grammar stores all of the rules associated with any kind of nonterminal and permits us to sample as...