~/ learn/ comp-456/ cards/ Inference rules: modus ponens, modus tollens, instantiation; sound & complete
1 of 4

Build a modus-ponens engine: apply MP to a fact set + rules repeatedly until no new fact appears (fixpoint), printing each derivation. Derive mortal(socrates).

Build a modus-ponens engine: apply MP to a fact set + rules repeatedly until no new fact appears (fixpoint), printing each derivation. Derive mortal(socrates).

Answer

def modus_ponens(facts, rules): facts = set(facts) while True: new = set() for antecedent, consequent in rules: if antecedent in facts and consequent not in facts: new.add(consequent) if not new: print('no new facts') return facts for f in sorted(new): print(f'derived: {f}') facts |= new facts = {'man(socrates)'} rules = [('man(socrates)', 'mortal(socrates)')] modus_ponens(facts, rules)

space flip · ← → navigate · esc to exit
NORMAL ~/memra/library/6e613906-1b6e-438c-9d9d-3d2b8e00e704/flashcard utf-8 LF