All the steps for setting up thinkfan on thinkpad x1 yoga gen 7:
-
install sensors (likely)
-
install thinkfan
-
create config file for driver (or whatever it is):
| #/bin/bash | |
| set -e | |
| if [ "$#" -ne 1 ]; then | |
| echo "Specify input TLSF file" | |
| exit 1 | |
| fi | |
| tlsf_file=$1 |
| viewhoa () | |
| { | |
| tmp_file=`mktemp -t "$(basename $0).XXXXXXXXXX.dot"`; | |
| echo $tmp_file; | |
| LIB_PATH=/home/art/software/sdf-hoa-master/third_parties/spot-install-prefix/lib; | |
| BIN_PATH=/home/art/software/sdf-hoa-master/third_parties/spot-install-prefix/bin; | |
| LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIB_PATH \ | |
| $BIN_PATH/autfilt $1 -d > $tmp_file; |
| #!/bin/bash | |
| # Run two processes of tlsf-sdf in parallel: | |
| # - one for the original spec, | |
| # - one for the dualized spec. | |
| # All agruments are relayed to tlsf-sdf-opt. | |
| set -m # enable 'job control' |
| #!/usr/bin/bash | |
| # This script model checks a given AIGER file wrt. TLSF specification: | |
| # @return: 0 on success, non-zero on failure | |
| # Convert TLSF to AIGER monitor: | |
| # syfco --format smv -m fully example.tlsf | smvtoaig > monitor.aag | |
| # Combine monitor with implementation: | |
| # combine-aiger monitor.aag implementation.aag > combined.aag |
| " Vim syntax file | |
| " Language: TLSF | |
| " Maintainer: Ayrat Khalimov <[email protected]> | |
| " Last change: Sep 20, 2018 | |
| " | |
| " put this into to your ~/.config/nvim/init.vim | |
| " | |
| " augroup syntax | |
| " au BufRead,BufNewFile,BufNewFile *.tlsf setfiletype tlsf | |
| " augroup END |
| #!/usr/bin/env python3 | |
| import argparse | |
| import os | |
| from os.path import join | |
| from datetime import datetime | |
| # https://stackoverflow.com/a/287944/801203 | |
| class Colors: |
| from itertools import chain | |
| from typing import Union | |
| import spot | |
| import buddy | |
| from interfaces.automata import Label | |
| from interfaces.lts import LTS | |
| from synthesis.funcs_args_types_names import ARG_MODEL_STATE |
| # the main function | |
| def get_edges_as_smt(function_name:str, a1:str, a2:str, node_type:str, graph): | |
| or_components = [] | |
| for s, d_list in graph.items(): | |
| for d in d_list: | |
| or_components.append('(and (= {a1} {s}) (= {a2} {d}))'.format(a1=a1,a2=a2,s=node_type+str(s),d=node_type+str(d))) | |
| or_smt = '(or %s)' % (' '.join(or_components)) | |
| return '(define-fun {function_name} (({a1} {node_type}) ({a2} {node_type})) Bool {body})'.format( | |
| a1=a1, a2=a2, node_type=node_type, function_name=function_name, body=or_smt) |
| import spot | |
| import buddy | |
| from typing import Set | |
| from helpers.str_utils import remove_from_str | |
| from interfaces.automata import Label, LABEL_TRUE | |
| from interfaces.expr import Signal | |
| def parse_bdd(bdd:buddy.bdd, d:spot.bdd_dict) -> Set[Label]: |