def test_unify_fun_var(self): a = Fun(Fun(Var('a'), Int()), Var('a')) b = Var('b') s = Sustitucion() s.push(Var('b'), Fun(Fun(Var('a'), Int()), Var('a'))) self.assertEqual(a.unify(b), s)
def test_unify_simple(self): a = Fun(Var('a'), Var('b')) b = Fun(Bool(), Int()) s = Sustitucion() s.push(Var('a'), Bool()) s.push(Var('b'), Int()) self.assertEqual(a.unify(b), s)
def test_unify_paren(self): a = Fun(Paren(Paren(Fun(Var('a'), Int()))), Var('a')) b = Fun(Paren(Var('b')), Paren(Fun(Var('c'), Paren(Int())))) s = Sustitucion() s.push(Var('b'), Fun(Fun(Var('c'), Int()), Int())) s.push(Var('a'), Fun(Var('c'), Int())) self.assertEqual(a.unify(b), s)