[opentheory-users] opentheory tool implementing eqMp incorrectly

Ramana Kumar ramana.kumar at gmail.com
Thu Sep 8 13:06:22 UTC 2011


I think there's an argument order problem. It's hard keeping track of
which argument is which though :)

The article file format says, roughly,
a :: a = b :: stack --[eqMp]--> b :: stack

Now in the opentheory tool source code,
...
      | Command.EqMp =>
        let
          val (stack,objA,objB) = ObjectStack.pop2 stack

          val obj = ObjectProv.mkEqMp {savable = savable} objA objB
...

fun pop2 stack =
...
      | obj1 :: obj0 :: objs =>
...
        in
          (stack,obj0,obj1)
        end
...

fun mkEqMp {savable} objA objB =
...
          in
            Object.Thm (Thm.eqMp a b)
          end
...

fun eqMp th1 th2 =
...
      val (c2',concl) = Term.destEq c1

      val () =
          if Term.alphaEqual c2 c2' then ()
          else raise Error "Thm.eqMp: not alpha equivalent"
...

(c2 is the conclusion of th2, c1 of th1)
But I think th2 will be the equality (a=b), not th1.



More information about the opentheory-users mailing list