Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
dktactics
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
CI / CD Analytics
Repository Analytics
Value Stream Analytics
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Francois THIRE
dktactics
Commits
b36fb641
Commit
b36fb641
authored
Dec 01, 2017
by
Raphael Cauderlier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Typos
parent
a85dc907
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
12 additions
and
12 deletions
+12
-12
manual.org
manual.org
+11
-11
meta/tac.dk
meta/tac.dk
+1
-1
No files found.
manual.org
View file @
b36fb641
...
...
@@ -130,7 +130,7 @@ by logical connectives and quantifiers.
An atom is a predicate symbol applied to terms respecting the arity of
the predicate symbol. Predicate symbols and their arities are defined
similarly to function symbols. A predicate symbol is a Dedukti term of
type =fol.predicate=. An artity is
is
associated to each predicate
type =fol.predicate=. An artity is associated to each predicate
symbol by the function
- =fol.pred_arity : fol.predicate -> fol.types=
...
...
@@ -220,7 +220,7 @@ definable so Deduction Modulo first-order theories can be defined.
** Equality
We treat equality as a first-order theory defined in the file
[[./fol/eq.d
l
][fol/eq.dk]]. Equality is a family of predicate symbols parameterized by
[[./fol/eq.d
k
][fol/eq.dk]]. Equality is a family of predicate symbols parameterized by
a sort:
- =eq.Eq : fol.type -> fol.predicate=
...
...
@@ -251,14 +251,14 @@ facts:
The Dedukti theory presented in [[* Multi-sorted first-order logic in Dedukti][the previous section]] is sound in the
following sense:
- Convergence: The rewrite system that defines it is both confluent
and terminating
and terminating
.
- Subject-reduction: Typing is preserved by reduction according to
this rewrite-system
this rewrite-system
.
- Decidability of type-checking: The type-checking problem for terms
in this Dedukti theory is decidable and the Dedukti type checker is
a decision procedure for it.
- Consistency: a closed term of type =fol.proof fol.false= can only be
obtained by encoding an inconsistent first-order theory
obtained by encoding an inconsistent first-order theory
.
Thanks to these good properties, a term of type =fol.proof A= can be
considered as a proof witnessing the truth of the proposition =A=. We
...
...
@@ -277,10 +277,10 @@ The first bad system is a dependently-typed tactic language. It is
very similar to the typed tactic languages of Lean and [[http://plv.mpi-sws.org/mtac/][Mtac]] but it is
simpler for the following reasons:
- It deals with first-order logic instead of the full calculus of
inductive constructions
inductive constructions
.
- In Dedukti it is not necessary to encode pattern matching and
recursion directly in the tactic language because the user can
already use rewriting for these tasks
already use rewriting for these tasks
.
- We have chosen to keep a shallow encoding of terms and formulae so
some features such as testing whether a term is a variable are
omitted.
...
...
@@ -296,7 +296,7 @@ to handle failure and backtracking.
- =tac.bind : A : fol.prop -> B : fol.prop -> tac.tactic A -> (fol.proof A -> tac.tactic B) -> tac.tactic B=
If =A= is a formula, =tac.tactic A= is the Dedukti type of the tactics
attempting to prove =A=. It forms a monad wh
i
se return and bind
attempting to prove =A=. It forms a monad wh
o
se return and bind
operations are =tac.ret= and =tac.bind= respectively.
When a tactic successfully proves a formula, we can extract a proof of the formula using the partial function =tac.run=:
...
...
@@ -359,7 +359,7 @@ The certificate language is described in file [[./meta/cert.dk][meta/cert.dk]].
** Contexts and certificate evaluation
=certificate= is the Dedukti type of certificates. Contrary to
=cert
.cert
ificate= is the Dedukti type of certificates. Contrary to
tactics, the type of a certificate does not indicate which formula it
is supposed to prove and the same certificate can in fact prove
several formulae.
...
...
@@ -546,8 +546,8 @@ The certificate =cert.apply A B a c= proves =B a= if =c= proves
*** Reasoning on the goal
The following certificates
each prove the current goal if it has a
particular shape:
The following certificates
are used to reason on the current goal,
each proves the current goal if it has a
particular shape:
- =cert.trivial : cert.certificate=
- =cert.split : cert.certificate -> cert.certificate -> cert.certificate=
- =cert.left : cert.certificate -> cert.certificate=
...
...
meta/tac.dk
View file @
b36fb641
...
...
@@ -7,7 +7,7 @@
(setq-local dedukti-compile-options '("-nc" "-e" "-nl" "-I" "../fol"))
;)
(; This is a Meta Dedukti port Mtac with the following simpifications:
(; This is a Meta Dedukti port
of
Mtac with the following simpifications:
- works on first-order logic instead of CIC
This implies a bit of duplication between terms and proofs.
- nu and abs are replaced by the less powerful but simpler to implement intro
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment