coq


Unfolding a proof term in Coq


I wonder if there is a way to obtain the proof term (serialized via Print or not) at some level beyond the current context (or just down to primitives). For example, executing the following
From mathcomp Require Import odd_order.PFsection14.
Print Feit_Thompson.
results in
Feit_Thompson =
fun (gT : fingroup.FinGroup.type)
(G : fingroup.group_of (gT:=gT)
(ssreflect.Phant
(fingroup.FinGroup.arg_sort
(fingroup.FinGroup.base gT)))) =>
BGsection7.minSimpleOdd_ind no_minSimple_odd_group (gT:=gT)
(G:=G)
: forall (gT : fingroup.FinGroup.type)
(G : fingroup.group_of (gT:=gT)
(ssreflect.Phant
(fingroup.FinGroup.arg_sort
(fingroup.FinGroup.base gT)))),
is_true
(ssrnat.odd
(fintype.CardDef.card
(T:=fingroup.FinGroup.arg_finType
(fingroup.FinGroup.base gT))
(ssrbool.mem
(finset.SetDef.pred_of_set
(fingroup.gval G))))) ->
is_true (nilpotent.solvable (fingroup.gval G))
but i would like to unfold the identifiers (theorems and definitions) used in the proof term such as no_minSimple_odd_group to their proof terms. I suspect that the opacity of theorems and lemmas might pose an obstacle to this purpose.
The naive solution i can think of is to recursively query each identifier via Print. Or a less naive (and less ideal due to the change in the language representing the proof term) solution, via program extraction.
I am not sure if there is a direct way of doing that, but it wouldn't be too hard to implement, at this level opacity is just a flag and can be bypassed.
However, I wonder about what do you want to achieve?
Note that most proof terms obtained that way are going to be just unmanageable, specially unfolding will quickly lead to a worse than exponential size blowup.

Related Links

can I force Coq to print parentheses?
Coq variable exists in list
What is required for Coq to generate an elimination combinator for an Inductive type?
How to capture parameters under universal quantification (using Modules? Sections?)
Proving for all elements of a list in coq
Coq adding a new variable instead of using the correct one
Simple identity in Coq
Unfold a notation within a scope
Error: Cannot coerce to an evaluable reference in coq
Proof in COQ that equality is reflexivity
How to express “there exists a unique X” in Coq?
Step by step simplification in coq?
Typeclass resolution and autorewrite
Need finding the right tactic over Int.lt
'else' in definitions - Coq
Solving equality / inequality in goal, coq code

Categories

HOME
compiler-construction
google-chrome-extension
winforms
openstack
azure-data-factory
kde
angular-material
homebrew
include
hp-exstream
hashmap
onedrive
raspberry-pi
octobercms
read-eval-print-loop
xmpp
google-oauth
fsm
callback
disassembler
windows-server
pivotal-cloud-foundry
datastax-java-driver
pheatmap
facebook-php-sdk
node-pdfkit
export-to-csv
postgres-xl
zend-framework3
fortumo
vaadin7
workload-scheduler
pc
crystal-reports-2008
object-detection
orleans
excel-2007
bootstrap-tour
icloud-api
blazemeter
h2db
shopware
sparse-matrix
wpfdatagrid
uninstall
nhapi
spring-mybatis
xacml
bcd
iframe-resizer
bosh
.net-4.0
protovis
mapbox-gl
vxworks
code-search-engine
unobtrusive-validation
preconditions
avro4s
pdf-reactor
jvm-languages
nand2tetris
cubic-spline
logfiles
parentheses
jquery-validate
sage-one
return-value
idisposable
nstextview
darcs
slickedit
kbuild
nodebb
memory-alignment
flutterwave
titanium-android
pintos
color-picker
probability-density
bonobo
elements
django-debug-toolbar
prettytensor
superstack
pickadate
netmq
teamcity-8.0
iis-arr
wyam
web-controls
sorl-thumbnail
c3
phalanger
preferences
html-helper
bitcoinj
uitouch
navigationservice
elliptic-curve
fluentautomation
bundles
industrial
access-rights
bulkloader
pygit2
anonymous-methods
unc
mt
jquery-ui-layout
fireworks
xmlspy
horizontal-accordion
ecl
yslow
h.323
digest-authentication
.nettiers
dbal
meego
compiler-specific
nerddinner
sector

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App