def test_entity(self):
     exprs = [lexpr('Python')]
     dynamic_library, _ = build_dynamic_library(exprs)
     dynamic_library = nltk_sig_to_coq_lib(dynamic_library)
     expected_dynamic_library = \
       ['Parameter Python : Entity.']
     self.assertEqual(expected_dynamic_library, dynamic_library)
Esempio n. 2
0
 def test_lexical_binary_two_coq_complex_type(self):
     semantic_index = SemanticIndex(None)
     semantic_rules = [SemanticRule(r'cat1', r'\P x R.P(x, R)', {'coq_type' : 'Entity -> Prop -> Prop'}),
                       SemanticRule(r'cat2', r'\Q S T.Q(S, T)', {'coq_type' : 'Prop -> Entity -> Prop'}),
                       SemanticRule(r'NP', r'\P Q x R S T.(Q(x, R) -> P(S, T))', {'rule' : 'lex'})]
     semantic_index.rules = semantic_rules
     sentence_str = r"""
   <sentence id="s1">
     <tokens>
       <token base="base1" pos="pos1" surf="surf1" id="t1_1"/>
       <token base="base2" pos="pos2" surf="surf2" id="t1_2"/>
     </tokens>
     <ccg root="sp1-3">
       <span terminal="t1_1" category="cat1" end="2" begin="1" id="sp1-1"/>
       <span terminal="t1_2" category="cat2" end="3" begin="2" id="sp1-2"/>
       <span child="sp1-1 sp1-2" rule="lex" category="NP" end="3" begin="1" id="sp1-3"/>
     </ccg>
   </sentence>
 """
     sentence = etree.fromstring(sentence_str)
     ccg_tree = assign_semantics_to_ccg(sentence, semantic_index)
     coq_lib = get_coq_types(ccg_tree)
     expected_coq_lib = ['Parameter _base1 : Entity -> Prop -> Prop.',
                         'Parameter _base2 : Prop -> Entity -> Prop.']
     self.assertEqual(expected_coq_lib, coq_lib)
     expression = [ccg_tree.get('sem')]
     coq_sig =  convert_coq_signatures_to_nltk(coq_lib)
     nltk_lib = build_dynamic_library(expression, coq_sig)
     lib = merge_dynamic_libraries(coq_lib, nltk_lib, './coqlib.v', sentence)
     expected_lib = ["Parameter _base2 : Prop -> Entity -> Prop.",
                     "Parameter _base1 : Entity -> Prop -> Prop."]
     self.assertCountEqual(expected_lib, lib)
Esempio n. 3
0
 def test_Lambda1exists1(self):
     exprs = [lexpr('\P.exist x.P(x)')]
     dynamic_library = build_dynamic_library(exprs)
     expected_dynamic_library = \
       ['Parameter P : Entity -> Prop.',
        'Parameter x : Entity.']
     for item in dynamic_library:
         self.assertIn(item, expected_dynamic_library)
     self.assertEqual(len(expected_dynamic_library), len(dynamic_library))
Esempio n. 4
0
 def test_predicate1_argument1(self):
     exprs = [lexpr('language(Python)')]
     dynamic_library = build_dynamic_library(exprs)
     expected_dynamic_library = \
       ['Parameter Python : Entity.',
        'Parameter language : Entity -> Prop.']
     for item in dynamic_library:
         self.assertIn(item, expected_dynamic_library)
     self.assertEqual(len(expected_dynamic_library), len(dynamic_library))
 def test_Lambda1exists1(self):
     exprs = [lexpr('\P.exist x.P(x)')]
     dynamic_library, _ = build_dynamic_library(exprs)
     dynamic_library = nltk_sig_to_coq_lib(dynamic_library)
     expected_dynamic_library = \
       ['Parameter P : Entity -> Prop.',
        'Parameter x : Entity.']
     for item in dynamic_library:
         self.assertIn(item, expected_dynamic_library)
     self.assertEqual(len(expected_dynamic_library), len(dynamic_library))
 def test_predicate1_argument1(self):
     exprs = [lexpr('language(Python)')]
     dynamic_library, _ = build_dynamic_library(exprs)
     dynamic_library = nltk_sig_to_coq_lib(dynamic_library)
     expected_dynamic_library = \
       ['Parameter Python : Entity.',
        'Parameter language : Entity -> Prop.']
     for item in dynamic_library:
         self.assertIn(item, expected_dynamic_library)
     self.assertEqual(len(expected_dynamic_library), len(dynamic_library))
Esempio n. 7
0
 def test_pred1_prop_prop(self):
     exprs = [lexpr('nice(language(Python, Scala))')]
     dynamic_library = build_dynamic_library(exprs)
     expected_dynamic_library = \
       ['Parameter nice : Prop -> Prop.',
        'Parameter Python : Entity.',
        'Parameter Scala : Entity.',
        'Parameter language : Entity -> Entity -> Prop.']
     for item in dynamic_library:
         self.assertIn(item, expected_dynamic_library)
     self.assertEqual(len(expected_dynamic_library), len(dynamic_library))
Esempio n. 8
0
 def test_predicate2_argument1_and_2(self):
     exprs = [lexpr('AND(language(Python, Scala), nice(Python))')]
     dynamic_library = build_dynamic_library(exprs)
     expected_dynamic_library = \
       ['Parameter nice : Entity -> Prop.',
        'Parameter Python : Entity.',
        'Parameter Scala : Entity.',
        'Parameter language : Entity -> Entity -> Prop.']
     for item in dynamic_library:
         self.assertIn(item, expected_dynamic_library)
     self.assertEqual(len(expected_dynamic_library), len(dynamic_library))
Esempio n. 9
0
 def test_Lambda3exists2(self):
     exprs = [lexpr('\P y.\T.exist x.exists z.T(P(x, y), z)')]
     dynamic_library = build_dynamic_library(exprs)
     expected_dynamic_library = \
       ['Parameter P : Entity -> Entity -> Prop.',
        'Parameter T : Prop -> Entity -> Prop.',
        'Parameter x : Entity.',
        'Parameter y : Entity.',
        'Parameter z : Entity.']
     for item in dynamic_library:
         self.assertIn(item, expected_dynamic_library)
     self.assertEqual(len(expected_dynamic_library), len(dynamic_library))
Esempio n. 10
0
 def test_pred1_prop_prop(self):
     exprs = [lexpr('nice(language(Python, Scala))')]
     dynamic_library, _ = build_dynamic_library(exprs)
     dynamic_library = nltk_sig_to_coq_lib(dynamic_library)
     expected_dynamic_library = \
       ['Parameter nice : Prop -> Prop.',
        'Parameter Python : Entity.',
        'Parameter Scala : Entity.',
        'Parameter language : Entity -> (Entity -> Prop).']
     for item in dynamic_library:
         self.assertIn(item, expected_dynamic_library)
     self.assertEqual(len(expected_dynamic_library), len(dynamic_library))
Esempio n. 11
0
 def test_Lambda3exists2(self):
     exprs = [lexpr('\P y.\T.exist x.exists z.T(P(x, y), z)')]
     dynamic_library, _ = build_dynamic_library(exprs)
     dynamic_library = nltk_sig_to_coq_lib(dynamic_library)
     expected_dynamic_library = \
       ['Parameter P : Entity -> (Entity -> Prop).',
        'Parameter T : Prop -> (Entity -> Prop).',
        'Parameter x : Entity.',
        'Parameter y : Entity.',
        'Parameter z : Entity.']
     for item in dynamic_library:
         self.assertIn(item, expected_dynamic_library)
     self.assertEqual(len(expected_dynamic_library), len(dynamic_library))
Esempio n. 12
0
 def test_lexical_binary_two_coq_complex_type(self):
     semantic_index = SemanticIndex(None)
     semantic_rules = [
         SemanticRule(r'cat1', r'\P x R.P(x, R)',
                      {'coq_type': 'Entity -> Prop -> Prop'}),
         SemanticRule(r'cat2', r'\Q S T.Q(S, T)',
                      {'coq_type': 'Prop -> Entity -> Prop'}),
         SemanticRule(r'NP', r'\P Q x R S T.(Q(x, R) -> P(S, T))',
                      {'rule': 'lex'})
     ]
     semantic_index.rules = semantic_rules
     sentence_str = r"""
   <sentence id="s1">
     <tokens>
       <token base="base1" pos="pos1" surf="surf1" id="t1_1"/>
       <token base="base2" pos="pos2" surf="surf2" id="t1_2"/>
     </tokens>
     <ccg root="sp1-3">
       <span terminal="t1_1" category="cat1" end="2" begin="1" id="sp1-1"/>
       <span terminal="t1_2" category="cat2" end="3" begin="2" id="sp1-2"/>
       <span child="sp1-1 sp1-2" rule="lex" category="NP" end="3" begin="1" id="sp1-3"/>
     </ccg>
   </sentence>
 """
     sentence = etree.fromstring(sentence_str)
     ccg_tree = assign_semantics_to_ccg(sentence, semantic_index)
     coq_lib = get_coq_types(ccg_tree)
     expected_coq_lib = [
         'Parameter _base1 : Entity -> Prop -> Prop.',
         'Parameter _base2 : Prop -> Entity -> Prop.'
     ]
     self.assertEqual(expected_coq_lib, coq_lib)
     expression = [ccg_tree.get('sem')]
     coq_sig = convert_coq_signatures_to_nltk(coq_lib)
     nltk_lib, _ = build_dynamic_library(expression, coq_sig)
     lib = merge_dynamic_libraries(coq_sig, nltk_lib, './coqlib.v',
                                   sentence)
     expected_lib = [
         "Parameter _base2 : Prop -> (Entity -> Prop).",
         "Parameter _base1 : Entity -> (Prop -> Prop)."
     ]
     self.assertCountEqual(expected_lib, lib)
Esempio n. 13
0
 def test_entity(self):
     exprs = [lexpr('Python')]
     dynamic_library = build_dynamic_library(exprs)
     expected_dynamic_library = \
       ['Parameter Python : Entity.']
     self.assertEqual(expected_dynamic_library, dynamic_library)