Skip to content
This repository was archived by the owner on Jan 27, 2021. It is now read-only.
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions doc/proving.md
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ since its type couldn't be inferred (and in fact it's not the same
as the type of *X* on the left-hand side, which is *d*).

It's also possible to write constraints that do not allow for any
assignment. In this case, Ivy complains that the provided match is
assignment. In this case, IVy complains that the provided match is
inconsistent.

Proof chaining
Expand Down Expand Up @@ -327,7 +327,7 @@ like this:
When checking the proof, the `showgoals` tactic has the effect of
printing the current list of proof goals, leaving the goals unchanged.
A good way to develop a proof is to start with just the tactic `showgoals`, and to add tactics
before it. Running the Ivy proof checker in an Emacs compilation buffer
before it. Running the IVy proof checker in an Emacs compilation buffer
is a convenient way to do this.

Theorems
Expand Down Expand Up @@ -404,7 +404,7 @@ We think this theorem holds because `f(f(f(X)))` is equal to `f(f(X))`
(by idempotence of *f*) which in turn is equal to `f(X)` (again, by
idempotence of *f*). This means we want to apply the transitivy rule, where
the intermediate term *Y* is `f(f(x))`. Notice we have to give the value of *Y*
explicitly. Ivy isn't clever enough to guess this intermediate term for us.
explicitly. IVy isn't clever enough to guess this intermediate term for us.
This gives us the following two proof subgoals:

# theorem [prop2] {
Expand Down Expand Up @@ -440,7 +440,7 @@ This substituion produces a new subgoal as follows:
# }

This goal is trivial, since the conclusion is exactly the same as one
of the premises, except for the names of bound variables. Ivy proves
of the premises, except for the names of bound variables. IVy proves
this goal automatically and drops it from the list. This leaves the
second subgoal `prop3` above. We can also prove this using `elimA`. In
this case `X` in the `elimA` rule corresponds to `X` in our goal.
Expand All @@ -449,7 +449,7 @@ strange, but keep in mind that the `X` on the left refers to `X` in
the `elimA` rule, while `X` on the right refers to `X` in our goal. It
just happens that we chose the same name for both variables.

Once again, the subgoal we obtain is trivial and Ivy drops it. Since
Once again, the subgoal we obtain is trivial and IVy drops it. Since
there are no more subgoals, the proof is now complete.

#### The deduction library
Expand Down Expand Up @@ -504,7 +504,7 @@ fragment. Because this definition is a schema, when we want to use it,
we'll have to apply it explicitly,

In order to admit this definition, we applied the definition
schema `rec[u]`. Ivy infers the following assignment:
schema `rec[u]`. IVy infers the following assignment:

# q=t, base(X) = 0, step(X,Y) = Y + X, fun(X) = sum(X)

Expand Down Expand Up @@ -547,7 +547,7 @@ The extended schema matches the definition, with the following assignment:

This is somewhat as if the functions were "curried", in which case the
free symbol `fun` would match the partially applied term `sumdiv N`.
Since Ivy's logic doesn't allow for partial application of functions,
Since IVy's logic doesn't allow for partial application of functions,
extended matching provides an alternative. Notice that,
to match the recursion schema, a function definition must be
recursive in its *last* parameter.
Expand Down Expand Up @@ -649,7 +649,7 @@ in the following way:
Provided we can prove the property, and that `next` is fresh, we can
infer that, for all *X*, `succ(X,next(X))` holds. Defining a function
in this way, (that is, as a Skolem function) can be quite useful in
constructing a proof. However, since proofs in Ivy are not generally
constructing a proof. However, since proofs in IVy are not generally
constructive, we have no way to *compute* the function `next`, so we
can't use it in extracted code.

Expand Down