Package | Description |
---|---|
alice.tuprolog | |
alice.tuprolog.clausestore | |
alice.tuprolog.hgdb | |
alice.tuprolog.lib | |
alice.tuprologx.runtime.rmi | |
alice.tuprologx.runtime.tcp |
Modifier and Type | Class and Description |
---|---|
class |
Double
Double class represents the double prolog data type
|
class |
Float
Float class represents the float prolog data type
|
class |
Int
Int class represents the integer prolog data type
|
class |
Long
Long class represents the long prolog data type
|
class |
Number
Number abstract class represents numbers prolog data type
|
class |
Struct
Struct class represents both compound prolog term
and atom term (considered as 0-arity compound).
|
class |
Var
This class represents a variable term.
|
Modifier and Type | Field and Description |
---|---|
static Term |
Term.FALSE |
static Term |
Term.TRUE |
Modifier and Type | Method and Description |
---|---|
Term |
SubGoalStore.backTo(SubGoalId identifier)
Ripristina ClauseStore allo stato i-esimo
|
Term |
Number.copy(AbstractMap vMap,
AbstractMap substMap)
gets a copy of the term.
|
abstract Term |
Term.copy(AbstractMap vMap,
AbstractMap substMap)
gets a copy for result.
|
Term |
Var.copy(AbstractMap vMap,
AbstractMap substMap)
Gets a copy of this variable.
|
Term |
Struct.copy(AbstractMap vMap,
AbstractMap substMap)
Gets a copy of this structure
|
Term |
Number.copy(AbstractMap vMap,
int idExecCtx)
gets a copy (with renamed variables) of the term.
|
abstract Term |
Term.copy(AbstractMap vMap,
int idExecCtx)
gets a copy (with renamed variables) of the term.
|
Term |
Var.copy(AbstractMap vMap,
int idExecCtx)
Gets a copy of this variable.
|
Term |
Struct.copy(AbstractMap vMap,
int idExecCtx)
Gets a copy of this structure
|
Term |
Number.copy(int idExecCtx)
gets a copy of this term.
|
Term |
Term.copyGoal(AbstractMap vars,
int idExecCtx)
gets a engine's copy of this term.
|
Term |
Term.copyResult(Collection goalVars,
List resultVars)
gets a copy of this term for the output
|
static Term |
Term.createTerm(String st)
Static service to create a Term from a string.
|
static Term |
Term.createTerm(String st,
alice.tuprolog.OperatorManager op)
Static service to create a Term from a string, providing an
external operator manager.
|
Term |
PrimitiveInfo.evalAsFunctor(Struct g)
evaluates the primitive as a functor
|
protected Term |
Library.evalExpression(Term term)
Evaluates an expression.
|
Term |
SubGoalStore.fetch()
Restituisce la clausola da caricare
|
Term |
Struct.getArg(int index)
Gets the i-th element of this structure
No bound check is done
|
Term |
SolveInfo.getQuery()
Gets the query
|
Term |
Engine.getQuery() |
Term |
SolveInfo.getSolution()
Gets the solution of the request
|
Term |
Number.getTerm()
Gets the actual term referred by this Term.
|
abstract Term |
Term.getTerm()
Gets the actual term referred by this Term.
|
Term |
Var.getTerm()
Gets the term which is referred by the variable.
|
Term |
Struct.getTerm() |
Term |
Struct.getTerm(int index)
Gets the i-th element of this structure
No bound check is done.
|
Term |
SolveInfo.getTerm(String varName)
Gets the value of a variable in the substitution.
|
Term |
SubGoalElement.getValue() |
Term |
SolveInfo.getVarValue(String varName)
Gets the value of a variable in the substitution.
|
Term |
PrimitiveManager.identifyDirective(Term term)
Identifies the term passed as argument.
|
Term |
Term.iteratedGoalTerm()
The iterated-goal term G of a term T is a term defined
recursively as follows:
if T unifies with ^(_, Goal) then G is the iterated-goal
term of Goal
else G is T
|
Term |
Struct.iteratedGoalTerm() |
Term |
Struct.listHead()
Gets the head of this structure, which is supposed to be a list.
|
Term |
Parser.nextTerm(boolean endNeeded)
Parses next term from the stream built on string.
|
static Term |
Term.parse(String st)
Deprecated.
Use
createTerm(String) instead. |
static Term |
Term.parse(String st,
alice.tuprolog.OperatorManager op)
Deprecated.
Use
createTerm(String, OperatorManager) instead. |
static Term |
Parser.parseSingleTerm(String st)
Static service to get a term from its string representation
|
static Term |
Parser.parseSingleTerm(String st,
alice.tuprolog.OperatorManager op)
Static service to get a term from its string representation,
providing a specific operator manager
|
Term |
Prolog.toTerm(String st)
Gets a term from a string, using the operators currently
defined by the engine
|
Modifier and Type | Method and Description |
---|---|
boolean |
BuiltIn.$append_2(Term arg0,
Term arg1) |
boolean |
BuiltIn.$call_1(Term goal)
It is the same as call/1, but it is not opaque to cut.
|
boolean |
BuiltIn.$find_2(Term arg0,
Term arg1) |
boolean |
BuiltIn.$fromlist_2(Term arg0,
Term arg1) |
void |
BuiltIn.$load_library_1(Term lib) |
boolean |
BuiltIn.$op_3(Term arg0,
Term arg1,
Term arg2) |
boolean |
BuiltIn.$retract_1(Term arg0) |
boolean |
BuiltIn.$tolist_2(Term arg0,
Term arg1) |
boolean |
BuiltIn.abolish_1(Term arg0) |
void |
SubGoalTree.addChild(Term term) |
void |
Struct.append(Term t)
Appends an element to this structure supposed to be a list
|
boolean |
BuiltIn.asserta_1(Term arg0) |
boolean |
BuiltIn.assertz_1(Term arg0) |
static ClauseStore |
DefaultClauseStore.build(Prolog engine,
Term goal,
List vars,
List familyClauses)
Carica una famiglia di clausole
|
ClauseStore |
ClauseStoreFactory.buildClause(Prolog prolog,
Term goal,
List<?> varList) |
ClauseStore |
ClauseStoreManager.buildClause(Prolog prolog,
Term goal,
List<?> varList) |
boolean |
BuiltIn.comma_2(Term arg0,
Term arg1) |
void |
BuiltIn.consult_1(Term theory) |
boolean |
BuiltIn.copy_term_2(Term arg0,
Term arg1) |
boolean |
BuiltIn.deunify_2(Term arg0,
Term arg1) |
protected Term |
Library.evalExpression(Term term)
Evaluates an expression.
|
List |
TheoryManager.find(Term headt)
Returns a family of clauses with functor and arity equals
to the functor and arity of the term passed as a parameter
|
void |
BuiltIn.flag_4(Term flagName,
Term flagSet,
Term flagDefault,
Term flagModifiable) |
boolean |
BuiltIn.flag_list_1(Term arg0) |
boolean |
BuiltIn.get_prolog_flag_2(Term arg0,
Term arg1) |
boolean |
BuiltIn.halt_1(Term arg0) |
Term |
PrimitiveManager.identifyDirective(Term term)
Identifies the term passed as argument.
|
void |
PrimitiveManager.identifyFunctor(Term term) |
void |
Prolog.identifyFunctor(Term term)
Identify functors
|
void |
PrimitiveManager.identifyPredicate(Term term) |
boolean |
BuiltIn.is_2(Term arg0,
Term arg1) |
boolean |
Float.isEqual(Prolog mediator,
Term t)
Returns true if this Float term is equal that the term provided.
|
boolean |
Double.isEqual(Prolog mediator,
Term t)
Returns true if this Double term is equal to the term provided.
|
abstract boolean |
Term.isEqual(Prolog mediator,
Term t)
Tests if this term is (logically) equal to another
|
boolean |
Long.isEqual(Prolog mediator,
Term t)
Returns true if this integer term is equal that the term provided.
|
boolean |
Int.isEqual(Prolog mediator,
Term t)
Returns true if this integer term is equal to the term provided.
|
boolean |
Var.isEqual(Prolog mediator,
Term t) |
boolean |
Struct.isEqual(Prolog mediator,
Term t)
Test if a term is equal to other
|
boolean |
Float.isGreater(Prolog mediator,
Term t)
Returns true if this Float term is grater that the term provided.
|
boolean |
Double.isGreater(Prolog mediator,
Term t)
Returns true if this Double term is grater that the term provided.
|
abstract boolean |
Term.isGreater(Prolog mediator,
Term t)
is term greater than term t?
|
boolean |
Long.isGreater(Prolog mediator,
Term t)
Returns true if this integer term is grater that the term provided.
|
boolean |
Int.isGreater(Prolog mediator,
Term t)
Returns true if this integer term is grater that the term provided.
|
boolean |
Var.isGreater(Prolog mediator,
Term t)
Gets a copy of this variable
|
boolean |
Struct.isGreater(Prolog mediator,
Term t)
Test if a term is greater than other
|
boolean |
BuiltIn.load_library_1(Term arg0) |
boolean |
Term.match(Prolog mediator,
Term t)
Tests if this term is unifiable with an other term.
|
protected boolean |
Library.match(Term a0,
Term a1)
tries to unify two terms
The runtime (demonstration) context currently used by the engine
is deployed and altered.
|
boolean |
Prolog.match(Term t0,
Term t1)
Unifies two terms using current demonstration context.
|
void |
Library.onSolveBegin(Term goal)
method invoked when the engine is going
to demonstrate a goal
|
void |
LibraryManager.onSolveBegin(Term g) |
void |
BuiltIn.op_3(Term arg0,
Term arg1,
Term arg2) |
boolean |
BuiltIn.set_prolog_flag_2(Term arg0,
Term arg1) |
void |
BuiltIn.solve_1(Term goal) |
SolveInfo |
Prolog.solve(Term g)
Solves a query
|
SolveInfo |
EngineManager.solve(Term query)
Solves a query
|
String |
Prolog.toString(Term term)
Gets the string representation of a term, using operators
currently defined by engine
|
boolean |
BuiltIn.unify_2(Term arg0,
Term arg1) |
boolean |
Float.unify(Prolog mediator,
List vl1,
List vl2,
Term t)
Tries to unify a term with the provided term argument.
|
boolean |
Double.unify(Prolog mediator,
List vl1,
List vl2,
Term t)
Tries to unify a term with the provided term argument.
|
abstract boolean |
Term.unify(Prolog mediator,
List varsUnifiedArg1,
List varsUnifiedArg2,
Term t)
Tries to unify two terms, given a demonstration context
identified by the mark integer.
|
boolean |
Long.unify(Prolog mediator,
List vl1,
List vl2,
Term t)
Tries to unify a term with the provided term argument.
|
boolean |
Int.unify(Prolog mediator,
List vl1,
List vl2,
Term t)
Tries to unify a term with the provided term argument.
|
boolean |
Var.unify(Prolog mediator,
List vl1,
List vl2,
Term t)
var unification.
|
boolean |
Struct.unify(Prolog mediator,
List vl1,
List vl2,
Term t)
Try to unify two terms
|
boolean |
Term.unify(Prolog mediator,
Term t1)
Try to unify two terms
|
protected boolean |
Library.unify(Term a0,
Term a1)
tries to unify two terms
The runtime (demonstration) context currently used by the engine
is deployed and altered.
|
boolean |
Prolog.unify(Term t0,
Term t1)
Unifies two terms using current demonstration context.
|
boolean |
BuiltIn.unload_library_1(Term arg0) |
Constructor and Description |
---|
Engine(EngineManager manager,
Term query) |
Struct(String f,
Term at0)
Builds a compound, with one argument
|
Struct(String f,
Term[] argList)
Builds a compound, with an array of arguments
|
Struct(String f,
Term at0,
Term at1)
Builds a compound, with two arguments
|
Struct(String f,
Term at0,
Term at1,
Term at2)
Builds a compound, with three arguments
|
Struct(String f,
Term at0,
Term at1,
Term at2,
Term at3)
Builds a compound, with four arguments
|
Struct(String f,
Term at0,
Term at1,
Term at2,
Term at3,
Term at4)
Builds a compound, with five arguments
|
Struct(String f,
Term at0,
Term at1,
Term at2,
Term at3,
Term at4,
Term at5)
Builds a compound, with six arguments
|
Struct(String f,
Term at0,
Term at1,
Term at2,
Term at3,
Term at4,
Term at5,
Term at6)
Builds a compound, with seven arguments
|
Struct(Term[] argList)
Builds a list specifying the elements
|
Struct(Term h,
Term t)
Builds a list providing head and tail
|
SubGoalElement(Term t) |
Modifier and Type | Class and Description |
---|---|
class |
HGAtomTerm |
Modifier and Type | Method and Description |
---|---|
Term |
HGAtomTerm.copy(AbstractMap map,
AbstractMap substMap) |
Term |
HGAtomTerm.copy(AbstractMap map,
int idExecCtx) |
Term |
HGAtomTerm.getTerm() |
Term |
HyperGraphClauseStore.toTerm(org.hypergraphdb.HGHandle h) |
Modifier and Type | Method and Description |
---|---|
ClauseStore |
JavaCollectionStoreFactory.buildClause(Prolog prolog,
Term goal,
List<?> varList) |
ClauseStore |
JavaMapStoreFactory.buildClause(Prolog prolog,
Term goal,
List<?> varList) |
ClauseStore |
HyperGraphStoreFactory.buildClause(Prolog prolog,
Term goal,
List<?> varList) |
boolean |
HGAtomTerm.isEqual(Prolog mediator,
Term t) |
boolean |
HGAtomTerm.isGreater(Prolog mediator,
Term t) |
boolean |
HGAtomTerm.unify(Prolog mediator,
List varsUnifiedArg1,
List varsUnifiedArg2,
Term t) |
Constructor and Description |
---|
CollectionItemsStore(Prolog engine,
Collection C,
Term item,
List varList,
JavaLibrary lib) |
MapEntriesStore(Prolog engine,
Map map,
Term key,
Term value,
List varList,
JavaLibrary lib) |
Modifier and Type | Method and Description |
---|---|
Term |
HGPrologLibrary.hg_clause_condition_1(Term clause) |
Term |
HGPrologLibrary.hg_count_1(Term clause) |
Term |
HGPrologLibrary.hg_find_all_1(Term condition) |
Modifier and Type | Method and Description |
---|---|
boolean |
HGPrologLibrary.hg_atom_1(Term t)
Return true if the term is a HyperGraph atom and false otherwise.
|
boolean |
HGPrologLibrary.hg_bind_2(Term condition,
Term clause)
Bind a Prolog clause (a Struct spec in the form of a name and arity)
to a HyperGraphDB condition.
|
Term |
HGPrologLibrary.hg_clause_condition_1(Term clause) |
boolean |
HGPrologLibrary.hg_clause_condition_2(Term clause,
Term id) |
Term |
HGPrologLibrary.hg_count_1(Term clause) |
Term |
HGPrologLibrary.hg_find_all_1(Term condition) |
boolean |
HGPrologLibrary.hg_unbind_1(Term clause)
Remove a clause binding from the HyperGraphDB clause store.
|
Modifier and Type | Method and Description |
---|---|
Term |
ISOLibrary.abs_1(Term val) |
Term |
ISOLibrary.atan_1(Term val) |
Term |
ISOLibrary.ceiling_1(Term val) |
Term |
ISOLibrary.cos_1(Term val) |
Term |
ISOLibrary.div_2(Term v0,
Term v1) |
Term |
ISOLibrary.exp_1(Term val) |
Term |
BasicLibrary.expression_bitwise_and_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_bitwise_not_1(Term arg0) |
Term |
BasicLibrary.expression_bitwise_or_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_bitwise_shift_left_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_bitwise_shift_right_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_div_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_integer_div_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_minus_1(Term arg1) |
Term |
BasicLibrary.expression_minus_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_multiply_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_plus_1(Term arg0) |
Term |
BasicLibrary.expression_plus_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_pow_2(Term arg0,
Term arg1) |
Term |
ISOLibrary.float_1(Term val) |
Term |
ISOLibrary.float_fractional_part_1(Term val) |
Term |
ISOLibrary.float_integer_part_1(Term val) |
Term |
ISOLibrary.floor_1(Term val) |
Term |
ISOLibrary.log_1(Term val) |
Term |
ISOLibrary.mod_2(Term v0,
Term v1) |
Term |
JavaLibrary.parse_term_1(Term string) |
Term |
ISOLibrary.rem_2(Term v0,
Term v1) |
Term |
ISOLibrary.round_1(Term val) |
Term |
ISOLibrary.sign_1(Term val) |
Term |
ISOLibrary.sin_1(Term val) |
Term |
ISOLibrary.sqrt_1(Term val) |
Term |
ISOLibrary.truncate_1(Term val) |
Modifier and Type | Method and Description |
---|---|
boolean |
BasicLibrary.$s_next0_3(Term witness,
Term wtList,
Term sNext) |
boolean |
BasicLibrary.$wt_unify_3(Term witness,
Term wtList,
Term tList) |
Term |
ISOLibrary.abs_1(Term val) |
boolean |
BasicLibrary.add_theory_1(Term th)
adds a new theory provided as a text
|
boolean |
BasicLibrary.agent_1(Term th)
spawns a separate prolog agent
providing it a theory text
|
boolean |
BasicLibrary.agent_2(Term th,
Term g)
spawns a separate prolog agent
providing it a theory text and a goal
|
Term |
ISOLibrary.atan_1(Term val) |
boolean |
BasicLibrary.atom_1(Term t) |
boolean |
ISOLibrary.atom_chars_2(Term arg0,
Term arg1) |
boolean |
ISOLibrary.atom_length_2(Term arg,
Term len) |
boolean |
BasicLibrary.atomic_1(Term t) |
boolean |
JavaLibrary.bindObject(Term id,
Object obj,
boolean dynamic)
Tries to bind specified id to a provided java object.
|
Term |
ISOLibrary.ceiling_1(Term val) |
boolean |
ISOLibrary.char_code_2(Term arg0,
Term arg1) |
boolean |
BasicLibrary.compound_1(Term t) |
boolean |
BasicLibrary.constant_1(Term t) |
Term |
ISOLibrary.cos_1(Term val) |
Object |
JavaLibrary.createJavaObject(Term className,
Term argl)
Creates of a java object - not backtrackable case
|
boolean |
JavaLibrary.destroy_object_1(Term id)
Destroy the link to a java object - called not directly, but from
predicate java_object (as second choice, for backtracking)
|
Term |
ISOLibrary.div_2(Term v0,
Term v1) |
Term |
ISOLibrary.exp_1(Term val) |
Term |
BasicLibrary.expression_bitwise_and_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_bitwise_not_1(Term arg0) |
Term |
BasicLibrary.expression_bitwise_or_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_bitwise_shift_left_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_bitwise_shift_right_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_div_2(Term arg0,
Term arg1) |
boolean |
BasicLibrary.expression_equality_2(Term arg0,
Term arg1) |
boolean |
BasicLibrary.expression_greater_or_equal_than_2(Term arg0,
Term arg1) |
boolean |
BasicLibrary.expression_greater_than_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_integer_div_2(Term arg0,
Term arg1) |
boolean |
BasicLibrary.expression_less_or_equal_than_2(Term arg0,
Term arg1) |
boolean |
BasicLibrary.expression_less_than_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_minus_1(Term arg1) |
Term |
BasicLibrary.expression_minus_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_multiply_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_plus_1(Term arg0) |
Term |
BasicLibrary.expression_plus_2(Term arg0,
Term arg1) |
Term |
BasicLibrary.expression_pow_2(Term arg0,
Term arg1) |
Term |
ISOLibrary.float_1(Term val) |
boolean |
BasicLibrary.float_1(Term t) |
Term |
ISOLibrary.float_fractional_part_1(Term val) |
Term |
ISOLibrary.float_integer_part_1(Term val) |
Term |
ISOLibrary.floor_1(Term val) |
boolean |
IOLibrary.get_1(Term arg0) |
boolean |
BasicLibrary.get_operators_list_1(Term argument) |
boolean |
BasicLibrary.get_theory_1(Term arg)
gets current theory text
|
boolean |
IOLibrary.get0_1(Term arg0) |
boolean |
BasicLibrary.ground_1(Term t) |
boolean |
BasicLibrary.integer_1(Term t) |
boolean |
BasicLibrary.iterated_goal_term_2(Term term,
Term goal) |
boolean |
JavaLibrary.java_array_get_primitive_3(Term obj_id,
Term i,
Term what) |
boolean |
JavaLibrary.java_array_set_primitive_3(Term obj_id,
Term i,
Term what) |
boolean |
JavaLibrary.java_call_3(Term objId,
Term method_name,
Term idResult)
Calls a method of a Java object
|
boolean |
JavaLibrary.java_class_4(Term clSource,
Term clName,
Term clPathes,
Term id)
Creates of a java class
|
boolean |
JavaLibrary.java_object_3(Term className,
Term argl,
Term id) |
boolean |
JavaLibrary.java_staticobject_3(Term className,
Term argl,
Term id) |
boolean |
BasicLibrary.list_1(Term t) |
boolean |
BasicLibrary.load_library_2(Term className,
Term libName) |
boolean |
BasicLibrary.load_library_from_theory_2(Term th,
Term libName)
Loads a library constructed from a theory.
|
Term |
ISOLibrary.log_1(Term val) |
Term |
ISOLibrary.mod_2(Term v0,
Term v1) |
boolean |
BasicLibrary.nonvar_1(Term t) |
boolean |
BasicLibrary.num_atom_2(Term arg0,
Term arg1) |
boolean |
BasicLibrary.number_1(Term t) |
void |
JavaLibrary.onSolveBegin(Term goal) |
Term |
JavaLibrary.parse_term_1(Term string) |
boolean |
IOLibrary.print_1(Term arg0) |
boolean |
IOLibrary.put_1(Term arg) |
boolean |
IOLibrary.rand_float_1(Term t) |
boolean |
IOLibrary.rand_int_2(Term argNum,
Term num) |
boolean |
IOLibrary.read_1(Term arg0) |
Term |
ISOLibrary.rem_2(Term v0,
Term v1) |
Term |
ISOLibrary.round_1(Term val) |
boolean |
IOLibrary.see_1(Term arg) |
boolean |
IOLibrary.seeing_1(Term t) |
boolean |
BasicLibrary.set_theory_1(Term th)
sets a new theory provided as a text
|
Term |
ISOLibrary.sign_1(Term val) |
Term |
ISOLibrary.sin_1(Term val) |
Term |
ISOLibrary.sqrt_1(Term val) |
boolean |
IOLibrary.tell_1(Term arg) |
boolean |
IOLibrary.telling_1(Term arg0) |
boolean |
BasicLibrary.term_equality_2(Term arg0,
Term arg1) |
boolean |
BasicLibrary.term_greater_than_2(Term arg0,
Term arg1) |
boolean |
BasicLibrary.term_less_than_2(Term arg0,
Term arg1) |
boolean |
BasicLibrary.text_concat_3(Term source1,
Term source2,
Term dest) |
boolean |
IOLibrary.text_from_file_2(Term file_name,
Term text)
reads a source text from a file.
|
boolean |
BasicLibrary.text_term_2(Term arg0,
Term arg1)
bidirectional text/term conversion.
|
Term |
ISOLibrary.truncate_1(Term val) |
boolean |
BasicLibrary.var_1(Term t) |
boolean |
IOLibrary.write_1(Term arg0) |
Modifier and Type | Method and Description |
---|---|
SolveInfo |
PrologImpl.solve(Term g) |
SolveInfo |
Prolog.solve(Term g) |
Modifier and Type | Method and Description |
---|---|
SolveInfo |
Proxy.solve(Term term) |
SolveInfo |
Prolog.solve(Term th) |
Copyright © 2015. All rights reserved.