src/HOL/Tools/Sledgehammer/MaSh/src/readData.py
author blanchet
Thu, 14 Nov 2013 15:57:48 +0100
changeset 54432 68f8bd1641da
parent 53555 12251bc889f1
permissions -rw-r--r--
have MaSh support nameless facts (i.e. proofs) and use that support
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50222
40e3c3be6bca added file headers
blanchet
parents: 50220
diff changeset
     1
#     Title:      HOL/Tools/Sledgehammer/MaSh/src/readData.py
40e3c3be6bca added file headers
blanchet
parents: 50220
diff changeset
     2
#     Author:     Daniel Kuehlwein, ICIS, Radboud University Nijmegen
40e3c3be6bca added file headers
blanchet
parents: 50220
diff changeset
     3
#     Copyright   2012
40e3c3be6bca added file headers
blanchet
parents: 50220
diff changeset
     4
#
40e3c3be6bca added file headers
blanchet
parents: 50220
diff changeset
     5
# All functions to read the Isabelle output.
40e3c3be6bca added file headers
blanchet
parents: 50220
diff changeset
     6
50220
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
     7
'''
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
     8
All functions to read the Isabelle output.
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
     9
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    10
Created on July 9, 2012
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    11
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    12
@author: Daniel Kuehlwein
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    13
'''
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    14
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    15
import sys,logging
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    16
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    17
def create_dependencies_dict(nameIdDict,inputFile):
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    18
    logger = logging.getLogger('create_dependencies_dict')
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    19
    dependenciesDict = {}
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    20
    IS = open(inputFile,'r')
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    21
    for line in IS:
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    22
        line = line.split(':')
50388
a5b666e0c3c2 added weights to MaSh (by Daniel Kuehlwein)
blanchet
parents: 50222
diff changeset
    23
        name = line[0]
50220
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    24
        # Name Id
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    25
        if not nameIdDict.has_key(name):
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    26
            logger.warning('%s is missing in nameIdDict. Aborting.',name)
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    27
            sys.exit(-1)
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    28
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    29
        nameId = nameIdDict[name]
50388
a5b666e0c3c2 added weights to MaSh (by Daniel Kuehlwein)
blanchet
parents: 50222
diff changeset
    30
        dependenciesIds = [nameIdDict[f.strip()] for f in line[1].split()]
50220
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    31
        # Store results, add p proves p
54432
68f8bd1641da have MaSh support nameless facts (i.e. proofs) and use that support
blanchet
parents: 53555
diff changeset
    32
        if nameId == 0:
68f8bd1641da have MaSh support nameless facts (i.e. proofs) and use that support
blanchet
parents: 53555
diff changeset
    33
            dependenciesDict[nameId] = dependenciesIds
68f8bd1641da have MaSh support nameless facts (i.e. proofs) and use that support
blanchet
parents: 53555
diff changeset
    34
        else:
68f8bd1641da have MaSh support nameless facts (i.e. proofs) and use that support
blanchet
parents: 53555
diff changeset
    35
            dependenciesDict[nameId] = [nameId] + dependenciesIds
50220
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    36
    IS.close()
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    37
    return dependenciesDict
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    38
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    39
def create_accessible_dict(nameIdDict,idNameDict,maxNameId,inputFile):
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    40
    logger = logging.getLogger('create_accessible_dict')
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    41
    accessibleDict = {}
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    42
    IS = open(inputFile,'r')
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    43
    for line in IS:
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    44
        line = line.split(':')
50388
a5b666e0c3c2 added weights to MaSh (by Daniel Kuehlwein)
blanchet
parents: 50222
diff changeset
    45
        name = line[0]
50220
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    46
        # Name Id
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    47
        if not nameIdDict.has_key(name):
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    48
            logger.warning('%s is missing in nameIdDict. Adding it as theory.',name)
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    49
            nameIdDict[name] = maxNameId
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    50
            idNameDict[maxNameId] = name
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    51
            nameId = maxNameId
50388
a5b666e0c3c2 added weights to MaSh (by Daniel Kuehlwein)
blanchet
parents: 50222
diff changeset
    52
            maxNameId += 1
50220
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    53
        else:
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    54
            nameId = nameIdDict[name]
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    55
        accessibleStrings = line[1].split()
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    56
        accessibleDict[nameId] = [nameIdDict[a.strip()] for a in accessibleStrings]
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    57
    IS.close()
90280d85cd03 moved MaSh's Python code into Isabelle
blanchet
parents:
diff changeset
    58
    return accessibleDict,maxNameId